/**
 * 内容创作者相关API
 *
 * 注意：所有接口都使用GET请求，因为：
 * 1. 后端 $this->request->param() 方法同时支持GET和POST请求
 * 2. GET请求可以更好地利用浏览器缓存，提升性能
 * 3. GET请求的URL可以被书签保存和分享
 * 4. 符合RESTful API的查询操作最佳实践
 */
import { apiClient } from './index'
import type { ApiResponse } from './types/common'
import type { CreatorsResponse, CreatorDetail as CreatorDetailType, CreatorFilter as CreatorFilterType, CreatorCategoriesResponse } from '@/types/creators'

// 创作者API端点
export const CREATORS_API = {
  GET_CREATORS_LIST: '/creator/index',
  GET_CREATOR_DETAIL: '/creator/detail',
  GET_CREATOR_RECOMMEND: '/creator/recommend',
  GET_CREATOR_CATEGORIES: '/creator/categories'
}

/**
 * 获取创作者列表 - 使用GET请求以更好利用缓存
 * @param params 查询参数
 */
export function getCreatorsList(params: Partial<CreatorFilterType> = {}) {
  const requestParams: Record<string, any> = {
    page: params.page || 1,
    limit: params.limit || 12
  }

  // 只有非空值才添加到请求参数中
  if (params.category && params.category.trim()) {
    requestParams.category = params.category.trim()
  }

  if (params.keyword && params.keyword.trim()) {
    requestParams.keyword = params.keyword.trim()
  }

  // creator_type 只有非0值才发送
  if (params.creator_type && params.creator_type > 0) {
    requestParams.creator_type = params.creator_type
  }

  // status 只有非空值才发送
  if (params.status && params.status.trim()) {
    requestParams.status = params.status.trim()
  }

  return apiClient.get<ApiResponse<CreatorsResponse>>(CREATORS_API.GET_CREATORS_LIST, {
    params: requestParams
  })
}

/**
 * 获取创作者详情 - 使用GET请求以利用缓存
 * @param id 创作者ID
 */
export function getCreatorDetail(id: number) {
  return apiClient.get<ApiResponse<CreatorDetailType>>(CREATORS_API.GET_CREATOR_DETAIL, {
    params: { id }
  })
}

/**
 * 获取推荐创作者 - 使用GET请求以利用缓存
 * @param limit 限制数量
 * @param creator_type 创作者类型
 */
export function getCreatorRecommend(limit: number = 5, creator_type: number = 0) {
  const requestParams: Record<string, any> = { limit }

  // creator_type 只有非0值才发送
  if (creator_type > 0) {
    requestParams.creator_type = creator_type
  }

  return apiClient.get<ApiResponse<CreatorDetailType[]>>(CREATORS_API.GET_CREATOR_RECOMMEND, {
    params: requestParams
  })
}

/**
 * 获取创作者分类列表 - 使用GET请求以利用缓存
 */
export function getCreatorCategories() {
  return apiClient.get<ApiResponse<CreatorCategoriesResponse>>(CREATORS_API.GET_CREATOR_CATEGORIES, {
  })
}

/**
 * 创作者类型配置
 */
export const CREATOR_TYPES = {
  1: {
    label: '直播主播',
    description: '专注于直播内容的创作者',
    color: '#f56c6c'
  },
  2: {
    label: '视频博主',
    description: '专注于视频内容的创作者',
    color: '#409eff'
  },
  3: {
    label: '全能创作者',
    description: '同时进行直播和视频创作',
    color: '#67c23a'
  }
} as const

/**
 * 创作者状态配置
 */
export const CREATOR_STATUS = {
  0: {
    label: '未激活',
    color: '#909399'
  },
  1: {
    label: '正常',
    color: '#67c23a'
  },
  2: {
    label: '暂停',
    color: '#e6a23c'
  },
  3: {
    label: '封禁',
    color: '#f56c6c'
  }
} as const
